package com.wn.consumer.controller;

import com.netflix.hystrix.contrib.javanica.annotation.DefaultProperties;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.wn.api.UserApi;
import com.wn.bean.User;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Random;
import java.util.UUID;

/**
 * @author yellow Docter
 * @date 2023 -08-07
 * @desc
 */
@RestController
@RequestMapping("/user1")
@DefaultProperties(defaultFallback = "errorFallback")   //服务降级的方法
public class User1Controller {

    @Autowired
    private UserApi userApi;

    @ApiOperation("测试Hystrix服务降级1")
    @HystrixCommand           // 熔断降级注解
    @GetMapping("get/{id}")
    public User getUserById(@PathVariable("id") Integer id){
        return userApi.findUserById(id);
    }

    //服务降级的方法 （返回一个预先准备好的数据）
    public User errorFallback(){
        User user = new User();
        user.setName("feign 执行异常.走默认方法....");
        user.setAge(0);
        user.setDesc("aaa");
        return user;
    }
}
